home *** CD-ROM | disk | FTP | other *** search
- /*
- msql.library monitor example
- ©1998 Christophe Sollet (cfc@iname.com)
-
- This monitor example list all msql.library function call.
- */
-
- #include <exec/types.h>
- #include <exec/memory.h>
- #include <proto/exec.h>
- #include <proto/msql.h>
- #include <utility/hooks.h>
- #include <utility/tagitem.h>
- #include <dos/dos.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
-
- struct Hook *hook;
- struct MsgPort *port;
-
- struct Library *MsqlBase;
-
- struct HMessage
- {
- struct Message msg;
- struct HookMessage *hmsg;
- };
-
- ULONG __saveds __asm HookFunc(register __a0 struct Hook *hook, register __a2 APTR object, register __a1 APTR message)
- {
- struct HMessage *hm;
- struct MsgPort *rp;
-
- if(hm = AllocMem(sizeof(struct HMessage), MEMF_CLEAR))
- {
- if(rp = CreateMsgPort())
- {
- hm->msg.mn_Node.ln_Type = NT_MESSAGE;
- hm->msg.mn_Length = sizeof(struct HMessage);
- hm->msg.mn_ReplyPort = rp;
-
- hm->hmsg = message;
- PutMsg(port, (struct Message *) hm);
- WaitPort(rp);
- GetMsg(rp);
-
- DeleteMsgPort(rp);
- }
- FreeMem(hm, sizeof(struct HMessage));
- }
- return NULL;
- }
-
- main()
- {
- struct HMessage *hm;
- char buffer[80];
-
- if(MsqlBase = OpenLibrary("msql.library", 4))
- {
- if(port = CreateMsgPort())
- {
- if(hook = AllocVec(sizeof(struct Hook), MEMF_CLEAR))
- {
- hook->h_Entry = (HOOKFUNC) HookFunc;
- if(MsqlAddMHook(hook, TAG_DONE))
- {
- BOOL fin = FALSE;
- while(!fin)
- {
- ULONG sigrevd = Wait((1L << port->mp_SigBit) | SIGBREAKF_CTRL_C);
-
- if(sigrevd & SIGBREAKF_CTRL_C)
- fin = TRUE;
- else
- {
- while(hm = (struct HMessage *) GetMsg(port))
- {
- if(hm->hmsg->type == FCH_ENTER)
- strcpy(buffer, "0x%x-->%s"); else strcpy(buffer, "0x%x<--%s");
-
- switch(hm->hmsg->id)
- {
- case MFT_AllocConnection :
- printf(buffer, hm->hmsg->task, "MsqlAllocConnection()");
- break;
- case MFT_FreeConnection :
- printf(buffer, hm->hmsg->task, "MsqlFreeConnection()");
- break;
- case MFT_GetErrMsg :
- printf(buffer, hm->hmsg->task, "MsqlGetErrMsg()");
- break;
- case MFT_Connect :
- printf(buffer, hm->hmsg->task, "MsqlConnect()");
- break;
- case MFT_SelectDB :
- printf(buffer, hm->hmsg->task, "MsqlSelectDB()");
- break;
- case MFT_Query :
- printf(buffer, hm->hmsg->task, "MsqlQuery()");
- break;
- case MFT_CreateDB :
- printf(buffer, hm->hmsg->task, "MsqlCreateDB()");
- break;
- case MFT_DropDB :
- printf(buffer, hm->hmsg->task, "MsqlDropDB()");
- break;
- case MFT_Shutdown :
- printf(buffer, hm->hmsg->task, "MsqlShutdown()");
- break;
- case MFT_GetProtoInfo :
- printf(buffer, hm->hmsg->task, "MsqlGetProtoInfo()");
- break;
- case MFT_ReloadAcls :
- printf(buffer, hm->hmsg->task, "MsqlReloadAcls()");
- break;
- case MFT_GetServerInfo :
- printf(buffer, hm->hmsg->task, "MsqlGetServerInfo()");
- break;
- case MFT_GetHostInfo :
- printf(buffer, hm->hmsg->task, "MsqlGetHostInfo()");
- break;
- case MFT_Close :
- printf(buffer, hm->hmsg->task, "MsqlClose()");
- break;
- case MFT_DataSeek :
- printf(buffer, hm->hmsg->task, "MsqlDataSeek()");
- break;
- case MFT_FieldSeek :
- printf(buffer, hm->hmsg->task, "MsqlFieldSeek()");
- break;
- case MFT_FreeResult :
- printf(buffer, hm->hmsg->task, "MsqlFreeResult()");
- break;
- case MFT_FetchRow :
- printf(buffer, hm->hmsg->task, "MsqlFetchRow()");
- break;
- case MFT_FetchField :
- printf(buffer, hm->hmsg->task, "MsqlFetchField()");
- break;
- case MFT_ListDBs :
- printf(buffer, hm->hmsg->task, "MsqlListDBs()");
- break;
- case MFT_ListTables :
- printf(buffer, hm->hmsg->task, "MsqlListTables()");
- break;
- case MFT_ListFields :
- printf(buffer, hm->hmsg->task, "MsqlListFields()");
- break;
- case MFT_ListIndex :
- printf(buffer, hm->hmsg->task, "MsqlListIndex()");
- break;
- case MFT_StoreResult :
- printf(buffer, hm->hmsg->task, "MsqlStoreResult()");
- break;
- case MFT_LoadConfigFile :
- printf(buffer, hm->hmsg->task, "MsqlLoadConfigFile()");
- break;
- case MFT_GetIntConfOld :
- printf(buffer, hm->hmsg->task, "MsqlGetIntConfOld()");
- break;
- case MFT_GetCharConfOld :
- printf(buffer, hm->hmsg->task, "MsqlGetCharConfOld()");
- break;
- case MFT_GetIntConf :
- printf(buffer, hm->hmsg->task, "MsqlGetIntConf()");
- break;
- case MFT_GetCharConf :
- printf(buffer, hm->hmsg->task, "MsqlGetCharConf()");
- break;
- case MFT_GetServerStats :
- printf(buffer, hm->hmsg->task, "MsqlGetServerStats()");
- break;
- case MFT_CopyDB :
- printf(buffer, hm->hmsg->task, "MsqlCopyDB()");
- break;
- case MFT_MoveDB :
- printf(buffer, hm->hmsg->task, "MsqlMoveDB()");
- break;
- case MFT_UnixTimeToDate :
- printf(buffer, hm->hmsg->task, "MsqlUnixTimeToDate()");
- break;
- case MFT_UnixTimeToTime :
- printf(buffer, hm->hmsg->task, "MsqlUnixTimeToTime()");
- break;
- case MFT_GetSequenceInfo :
- printf(buffer, hm->hmsg->task, "MsqlGetSequenceInfo()");
- break;
- case MFT_DateToUnixTime :
- printf(buffer, hm->hmsg->task, "MsqlDateToUnixTime()");
- break;
- case MFT_TimeToUnixTime :
- printf(buffer, hm->hmsg->task, "MsqlTimeToUnixTime()");
- break;
- case MFT_SumTimes :
- printf(buffer, hm->hmsg->task, "MsqlSumTimes()");
- break;
- case MFT_DateOffset :
- printf(buffer, hm->hmsg->task, "MsqlDateOffset()");
- break;
- case MFT_DiffTimes :
- printf(buffer, hm->hmsg->task, "MsqlDiffTimes()");
- break;
- case MFT_DiffDates :
- printf(buffer, hm->hmsg->task, "MsqlDiffDates()");
- break;
- default:
- printf("Unknown function call!");
- break;
-
- }
- printf("\n");
- ReplyMsg((struct Message *) hm);
- }
- }
- }
- MsqlRemMHook(hook);
- }
- FreeVec(hook);
- }
- while(hm = (struct HMessage *) GetMsg(port)) ReplyMsg((struct Message *) hm);
- DeleteMsgPort(port);
- }
- CloseLibrary(MsqlBase);
- }
- }
-